常问问题

如何人为结束RCV接收状态?

接收指令控制字节(SMB87/SMB187)的en位可以用来允许/禁止接收状态。可以设置en为“0”,然后对此端口执行RCV指令,即可结束RCV指令。

需要定时向通信对象发送消息并等待回复的消息,如果因故消息没有正常接收,下次无法发送消息怎么办?

可以在开始发送消息时加上人为中止RCV指令的程序。

自由口通信中,主站向从站发送数据,为何收到多个从站的混乱响应?

这说明从站没有根据主站的要求发送消息。有多个从站的通信网络中,从站必须能够判断主站的消息是不是给自己的,这需要从站的通信程序中有必要的判断功能。

自由口通信协议是什么?

顾名思义,没有什么标准的自由口协议。用户可以自己规定协议。

新的PC/PPI电缆能否支持自由口通信?

新的RS-232/PPI电缆(6ES7 901-3CB30-0XA0)可以支持自由口通信;但需要将DIP开关5设置为“0”,并且设置相应的通信速率。

新的USB/PPI电缆(6ES7 901-3DB30-0XA0)不能支持自由口通信。

已经用于自由口的通信口,是否可以连接操作面板(HMI)?

不能。

可以使用具有两个通信口的CPU,或者使用EM277扩展HMI连接口。如果是其他厂商的HMI,须咨询他们。

已知一个通信对象需要字符(字节)传送格式有两个停止位,S7-200是否支持?

字符格式是由最基础的硬件(芯片)决定的;S7-200使用的芯片不支持上述格式。

S7-200是否支持《S7-200系统手册》上列明的通信波特率以外的其他特殊通信速率?

通信速率是由最基础的硬件(芯片)决定的;S7-200使用的芯片不支持没有列明在手册上的通信速率。

用SMB接收多个字符,如何编程?

由于SMB2只能存储一个字符(一个字节),如果要想接受多个字符,则应当在CPU接收下一个字符之前,在中断程序中通过指针编程将SMB2中存储的字符移出来,以便下一次接收字符。以一个例程说明:如图30.

图30.接收多个字符的程序

VD0作为地址指针指向VB100,当端口0接收到第一个字符,将第一个字符存入SMB2,进入接收中断,将SMB2中的字符复制到指针VD0指向的地址字节VB100中,指针地址加1,VD0指向下一个字节VB101。当接收第二

个字符,将字符存入SMB2,进入接收中断,将SMB2中的第二个字符复制到指针VD0指向的地址字节VB101中,指针地址加1,VD0指向下一个字节VB102。当接收第三个字符时以此类推。

另外,如果需要接收n个字符就结束接收,或者需要接收n个字符后循环接收,可以在中断程序中设置一个标志位,下面我们试举例说明:


例程1,接收到5个字符就结束接收的程序:如图31.